﻿var ns = namespace("kaskelot.sp.ui");

ns.kursplaceraform = function () {
	var cookieName = "placerasearch";

	function init() {
		var c = kaskelot.sp.ui.cookies.getCookie(cookieName);
		if (c != undefined) {
			$("#kursplats-form #InaktivaCheckbox").prop('checked', c.visaInaktiva);
			$("#kursplats-form #PersonnummerTextbox").val(c.personnummer);
			$("#kursplats-form #PostnummerTextbox").val(c.postnummer);
			$("#kursplats-form #NamnTextbox").val(c.namn);
			$("#kursplats-form #FunktionDropDown").val(c.funktionId).trigger("liszt:updated");
			$("#kursplats-form #FritextTextbox").val(c.fritext);
			searchPerson();
		}

		$("#kursplats-form #placera-search-button").click(function () {
			searchPerson();
		});

		$("#kursplats-form #placera-clear-button").click(function () {
			$("#InaktivaCheckbox").prop('checked', false);
			$("#PersonnummerTextbox").val("");
			$("#PostnummerTextbox").val("");
			$("#NamnTextbox").val("");
			$("#FunktionDropDown").val("").trigger("liszt:updated");
			$("#FritextTextbox").val("");
		});

		$("#kursplatsvaldistrikt-form #ValdistriktValkretsDropDownList").change(
			function () {
				getForsamlingar();
			}
		);

		$("#kursplatsvaldistrikt-form #valdistrikt-search-button").click(function () {
			searchValdistrikt();
		});

		$("#placera-search-input-container").keypress(function (event) {
			if (event.which === 13) {
				searchPerson();
				event.stopPropagation();
			}
		});
	}

	function showPlaceraKursplatsForm(id) {
		var selector = "#kursplats-form";
		kaskelot.sp.ui.formutils.getAndShowForm({
			params: {
				formName: "KursPlatsForm",
				idString: id,
				parentIdString: ""
			},
			selector: selector,
			openFunction: function () {
				$(".chzn-select-deselect").chosen({ allow_single_deselect: true, disable_search: true });
			},
			okFunction: function () {
				$(selector).parent().block();

				var prog = kaskelot.sp.ui.formutils.getObject(selector);
				var data = "{\"form\":" + JSON.stringify(prog) + "}";

				var method = "PlaceraPersonTillKurs";

				$.ajax({
					url: L_Menu_BaseUrl + "/_vti_bin/Kaskelot.SP.Resources/ClientKursService.svc/" + method,
					data: data,
					type: "POST",
					processData: false,
					contentType: "application/json",
					dataType: "json",
					success: function (resp) {
						if (resp[method + "Result"].HasError) {
							kaskelot.sp.ui.formutils.showError(selector, resp[method + "Result"].ErrorMessage);
						}
						else {
							$(selector).dialog("close");
							kaskelot.sp.ui.kurstillfalledetails.getPlacering();

						}
					},
					error: function (xhr) {
						kaskelot.sp.ui.formutils.showError(selector, xhr.responseText);
					}
				});
			}
		});
	}

	function searchPerson() {
		var inaktiva = $("#InaktivaCheckbox").prop('checked');
		var personnummer = $("#PersonnummerTextbox").val();
		var postnummer = $("#PostnummerTextbox").val();
		var namn = $("#NamnTextbox").val();
		var funktion = $("#FunktionDropDown").val();
		var fritext = $("#FritextTextbox").val();

		var data = { namn: namn, personnummer: personnummer, postnummer: postnummer, fritext: fritext, funktionId: funktion, visaInaktiva: inaktiva };
		kaskelot.sp.ui.cookies.setCookie(cookieName, data);

		$("#kursplats-form").block({ message: '<h1>Var god vänta...</h1>' });

		$.ajax({
			url: L_Menu_BaseUrl + "/_vti_bin/Kaskelot.SP.Resources/ClientPersonService.svc/SearchPersoner",
			type: "GET",
			data: data,
			processData: true,
			cache: false,
			success:
				function (data) {
					if (!data.SearchPersonerResult.HasError) {
						$("#placera-search-results tbody").html(
							$("#placera-template").render(data.SearchPersonerResult.Data)
						);
					}
					$("#kursplats-form").unblock();
				},
			error:
				function (xhr) {
					$("#kursplats-form").unblock();
					kaskelot.sp.ui.prompts.showErrorPrompt(xhr.responseText);
				}
		});
	}

	function selectPerson(id) {
		$("#kursplats-form tr").removeClass("selected-row");
		$("#kursplats-form #" + id).addClass("selected-row");
		$("#PersonId").val(id);
	}

	function removePerson(id) {
		$.ajax({
			url: L_Menu_BaseUrl + "/_vti_bin/Kaskelot.SP.Resources/ClientKursService.svc/RemovePersonFromPersonKursTillfalle",
			type: "GET",
			data: { id: id },
			processData: true,
			cache: false,
			success:
				function (data) {
					if (!data.RemovePersonFromPersonKursTillfalleResult.HasError) {
						kaskelot.sp.ui.kurstillfalledetails.getPlacering();
					}
				},
			error:
				function (xhr) {
					kaskelot.sp.ui.prompts.showErrorPrompt(xhr.responseText);
				}
		});
	}

	function showPlaceraValdistriktForm() {
		var id = getParameterByName("KurstillfalleId");

		var selector = "#kursplatsvaldistrikt-form";
		kaskelot.sp.ui.formutils.getAndShowForm({
			params: {
				formName: "KursPlatsValdistriktForm",
				idString: id,
				parentIdString: ""
			},
			selector: selector,
			openFunction: function () {
				$(".chzn-select-deselect").chosen({ allow_single_deselect: true, disable_search: true });
			},
			okFunction: function () {
				$(selector).parent().block();

				var prog = kaskelot.sp.ui.formutils.getObject(selector);
				var data = "{\"form\":" + JSON.stringify(prog) + "}";

				var method = "PlaceraValdistriktTillKurs";

				$.ajax({
					url: L_Menu_BaseUrl + "/_vti_bin/Kaskelot.SP.Resources/ClientKursService.svc/" + method,
					data: data,
					type: "POST",
					processData: false,
					contentType: "application/json",
					dataType: "json",
					success: function (resp) {
						if (resp[method + "Result"].HasError) {
							kaskelot.sp.ui.formutils.showError(selector, resp[method + "Result"].ErrorMessage);
						}
						else {
							$(selector).dialog("close");
							kaskelot.sp.ui.kurstillfalledetails.getPlacering();

						}
					},
					error: function (xhr) {
						kaskelot.sp.ui.formutils.showError(selector, xhr.responseText);
					}
				});
			}
		});
	}

	function showPlaceraGruppForm() {
		var id = getParameterByName("KurstillfalleId");

		var selector = "#kursplatsgrupp-form";
		kaskelot.sp.ui.formutils.getAndShowForm({
			params: {
				formName: "KursPlatsGruppForm",
				idString: id,
				parentIdString: ""
			},
			selector: selector,
			openFunction: function () {

			},
			okFunction: function () {
				$(selector).parent().block();

				var prog = kaskelot.sp.ui.formutils.getObject(selector);
				var data = "{\"form\":" + JSON.stringify(prog) + "}";

				var method = "PlaceraGruppTillKurs";

				$.ajax({
					url: L_Menu_BaseUrl + "/_vti_bin/Kaskelot.SP.Resources/ClientKursService.svc/" + method,
					data: data,
					type: "POST",
					processData: false,
					contentType: "application/json",
					dataType: "json",
					success: function (resp) {
						if (resp[method + "Result"].HasError) {
							kaskelot.sp.ui.formutils.showError(selector, resp[method + "Result"].ErrorMessage);
						}
						else {
							$(selector).dialog("close");
							kaskelot.sp.ui.kurstillfalledetails.getPlacering();

						}
					},
					error: function (xhr) {
						kaskelot.sp.ui.formutils.showError(selector, xhr.responseText);
					}
				});
			}
		});
	}

	function getForsamlingar() {
		// Parametrar
		var valkrets = $("#ValdistriktValkretsDropDownList").val();
		var list = $("#ValdistriktForsamlingDropDownList");

		$("#ValdistriktForsamlingDropDownList_chzn").block({ message: "" });

		$.ajax({
			url: L_Menu_BaseUrl + "/_vti_bin/Kaskelot.SP.Resources/ClientByggnadService.svc/GetForsamlingar",
			type: "GET",
			data: { valkretsId: valkrets },
			processData: true,
			success:
				function (data) {
					if (!data.GetForsamlingarResult.HasError) {
						var v = document.getElementById("ValdistriktForsamlingDropDownList");
						v.innerHTML = "";

						for (var i = 0; i < data.GetForsamlingarResult.Data.length; i++) {
							var opt = document.createElement("option");
							opt.value = data.GetForsamlingarResult.Data[i].ForsamlingId;
							opt.text = data.GetForsamlingarResult.Data[i].ForsamlingNamn;

							v.options.add(opt, 0);
						}

						var x = document.createElement("option");
						v.options.add(x, 0);

						v.selectedIndex = -1;

						list.trigger("liszt:updated");
					}
					$("#ValdistriktForsamlingDropDownList_chzn").unblock();
				},
			error:
				function (xhr) {
					$("#ValdistriktForsamlingDropDownList_chzn").unblock();
					kaskelot.sp.ui.prompts.showErrorPrompt(xhr.responseText);
				}
		});
	}

	function searchValdistrikt() {
		// Parametrar
		var valkrets = $("#ValdistriktValkretsDropDownList").val();
		var forsamling = $("#ValdistriktForsamlingDropDownList").val();
		var kurs = $("#KursTillfalleId").val();

		$("#kursplatsvaldistrikt-form").block({ message: '<h1>Var god vänta...</h1>' });

		$.ajax({
			url: L_Menu_BaseUrl + "/_vti_bin/Kaskelot.SP.Resources/ClientBemanningService.svc/ValdistriktSearch",
			type: "GET",
			data: { valkretsId: valkrets, forsamlingId: forsamling, kurstillfalleId: kurs },
			processData: true,
			cache: false,
			success:
				function (data) {
					if (!data.ValdistriktSearchResult.HasError) {
						$("#placera-search-results tbody").html(
							$("#placera-template").render(data.ValdistriktSearchResult.Data)
						);
					}
					$("#kursplatsvaldistrikt-form").unblock();
				},
			error:
				function (xhr) {
					$("#kursplatsvaldistrikt-form").unblock();
					kaskelot.sp.ui.prompts.showErrorPrompt(xhr.responseText);
				}
		});
	}

	function searchGrupper() {
		$("#kursplatsgrupp-form").block({ message: '<h1>Var god vänta...</h1>' });
		var kurs = $("#KursTillfalleId").val();

		$.ajax({
			url: L_Menu_BaseUrl + "/_vti_bin/Kaskelot.SP.Resources/ClientBemanningService.svc/GruppSearch",
			type: "GET",
			data: { kursTillfalleId: kurs },
			processData: true,
			cache: false,
			success:
				function (data) {
					if (!data.GruppSearchResult.HasError) {
						$("#placera-search-results tbody").html(
							$("#placera-template").render(data.GruppSearchResult.Data)
						);
					}
					$("#kursplatsgrupp-form").unblock();
				},
			error:
				function (xhr) {
					$("#kursplatsgrupp-form").unblock();
					kaskelot.sp.ui.prompts.showErrorPrompt(xhr.responseText);
				}
		});
	}

	function selectValdistrikt(id) {
		var v = $("#ValdistriktId");
		var idList = v.val().split(";");
		var exists = false;

		for (var i = 0; i < idList.length; i++) {
			if (idList[i] === id) {
				exists = true;
				break;
			}
		}

		if (exists) {
			$("#kursplatsvaldistrikt-form #" + id).removeClass("selected-row");

			// Change v.val
			var updatedIdList = "";
			for (var i = 0; i < idList.length; i++) {
				if (idList[i] != id) {
					if (updatedIdList !== "") {
						updatedIdList += ";";
					}

					updatedIdList = updatedIdList + idList[i];
				}
			}

			v.val(updatedIdList);
		}
		else {
			$("#kursplatsvaldistrikt-form #" + id).addClass("selected-row");

			if (v.val() === "") {
				v.val(id);
			}
			else {
				v.val(v.val() + ";" + id);
			}
		}
	}

	function selectGrupp(id) {
		$("#kursplatsgrupp-form tr").removeClass("selected-row");
		$("#kursplatsgrupp-form #" + id).addClass("selected-row");
		$("#GruppId").val(id);
	}

	return {
		init: init,
		removePerson: removePerson,
		showPlaceraKursplatsForm: showPlaceraKursplatsForm,
		showPlaceraValdistriktForm: showPlaceraValdistriktForm,
		showPlaceraGruppForm: showPlaceraGruppForm,
		searchGrupper: searchGrupper,
		searchPerson: searchPerson,
		selectPerson: selectPerson,
		selectValdistrikt: selectValdistrikt,
		selectGrupp: selectGrupp
	};
}();